import axios from 'axios'
// 引入vuex
import store from '@/store/index'
// 引入router路由
import router from '@/router'
// 引入message组件
import { Message } from 'element-ui'
// axios.create()创建一个带配置项的自定义axios函数
// export const baseURL = 'http://big-event-vue-api-t.itheima.net'
export const baseURL = 'http://127.0.0.1:8000'
const instance = axios.create({
  baseURL: baseURL
})
const whiteName = ['/api/login', '/api/reguser']
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 如果不在白名单里的，就加请求头
  if (!whiteName.includes(config.url)) {
    config.headers.Authorization = store.state.token
  }
  console.log('config数据为', config)
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  // 响应http状态码为 2xx或 3xx时 触发成功的回调
  return response
}, function (error) {
  // 对响应错误做点什么
  // 响应http状态码为 4xx或 5xx时 触发失败的回调
  // console.dir(error)

  // token过期
  if (error.response.status === 401) {
    // 清除vuex里的一切
    store.commit('updateToken', '')
    store.commit('updateUserInfo', '')
    // 然后切换回到登录页面(被动退出登录状态)
    router.push('/login')
    Message.error('用户身份已过期~~~')
  }
  return Promise.reject(error)
})

// 导出axios自定义函数
export default instance
